#include <I2CTemp_Config.h>

//主函数里面的变量
//char tem[9];            //显示温度的数组
//float  f32_Temp_Cdeg;       // 温度(摄氏度)
//char button;            //按键判断
//float temperature=30;   //恒温温度值
//char temperaturechar[50];   //显示恒温温度

int i;
uint16_t tempInteger;   //温度整数位
float tempDecimal;      //温度小数位
int tempFlag;           //温度标志位（前面是否有0）


void I2CTemp_Init(void)
{
    P2->DIR |= BIT7;    // TMP75 背面功率电阻
    TMP75_R_HEAT_OFF;   // 停止加热
    I2C_Init_TMP75();       // 初始化 I2C 功能
    // TMP75 温度分辨率设置
    TMP75_Res(TMP75_12);    // 此处设置为 12 位, 分辨率 0.0625℃
}

//计算温度值
float calTemp(void)
{
    uint16_t temp;
    temp = TMP75_Temp_REG();        // TMP75 读温度寄存器
    // 按 TMP75 读温度寄存器存储格式换算为温度数值（浮点格式）
    // 低位：取右8位的前4位
    //高位:取左8位
    return (temp >> 8)+(float)((temp & 0x00ff)>>4)/16.0; //左8位为整数
                                    //右8位的前4位除以16为小数部分
}

//获得转换的温度字符串
void charTemp(float f32_Temp_Cdeg,char tem[])
{
    if(f32_Temp_Cdeg<125){  //温度为正
        tempInteger = (uint16_t)f32_Temp_Cdeg;  //取整数部分
        tempFlag = 1;
        tem[0] = tempInteger/100;
        if( (tem[0]==0)&&(tempFlag) ){  //前面有0
            tem[0] = ' ';
        }
        else{
            tem[0]+='0';
            tempFlag = 0;
        }
        tem[1]=tempInteger%100/10;
        if( (tem[1]==0)&&(tempFlag) ){
            tem[1] = ' ';
        }
        else{
            tem[1] += '0';
            tempFlag = 0;
        }
        tem[2] = tempInteger%10;
        tem[2] += '0';
        tem[3] = '.';
        tempDecimal = (f32_Temp_Cdeg-(uint16_t)f32_Temp_Cdeg);
        //初始化清空
        tem[4] = ' ';
        tem[5] = ' ';
        tem[6] = ' ';
        tem[7] = ' ';
        tem[8] = ' ';
        if(tempDecimal==0){ //没有小数部分
            tem[3] = 'C';
        }
        else{
            //做循环分别将四位数字取出来
            for(i=0;i<4;i++){
                tempDecimal=tempDecimal*10.0;
                tem[4+i] = (int)tempDecimal;
                tempDecimal=tempDecimal-(int)tempDecimal;
                tem[4+i] += '0';
            }
            //从后往前循环，如果最后的数字是0则去掉
            for(i=3;i>0;i--){
                if(tem[4+i]=='0'){
                    tem[4+i]=' ';
                }
                else{
                    break;
                }
            }
            tem[4+i+1] = 'C';   //去掉的0位补上C
        }
    }
}

//恒温
void colTemp(float f32_Temp_Cdeg ,float temperature)
{
    if(f32_Temp_Cdeg < temperature)  // 如果温度低于预设温度, 启动加热
    {
        // 开始加热
        TMP75_R_HEAT_ON;
    }
    else
    {
        // 停止加热
        TMP75_R_HEAT_OFF;
    }
}
